博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序上传图片
阅读量:4591 次
发布时间:2019-06-09

本文共 4326 字,大约阅读时间需要 14 分钟。

1.因为小程序的api描述都比较简单,并没有wxml及wxss的描述,要想实现小程序demo上的上传图片样式首先需要下载weui.wxss并引入到项目中

小程序版weui下载地址:https://github.com/Tencent/weui-wxss

可以将整个文件下载下来,将其中的dist文件夹导入到独立的小程序中作为参考

把weui.wxss放到自己的项目中后,在app.wxss中import weui.wxss 作为全局样式

/**app.wxss**/@import "weui.wxss";  

照着domo把wxml相关内容复制进自己的文件中

图片上传
{ {images.length}}/9

 根据demo修改相关js:

 首先实现选择图片功能

Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址  },  chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })         }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  } })

 在此基础上进行上传图片,上传文件官方方法如下:

wx.uploadFile({      url: 'https://example.weixin.qq.com/upload', //仅为示例,非真实的接口地址      filePath: tempFilePaths[0],      name: 'file',      formData:{        'user': 'test'      },      success: function(res){        var data = res.data        //do something      }

 发现了尴尬的问题,发现上传图片一次只能传一张

参考了https://www.cnblogs.com/xjwy/p/6956120.html的递归方法,进行多张图片的上传

方法如下:

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })} 

点击上传按钮后调用该方法,进行图片上传

uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({//调用图片上传uploadimg方法        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }

  全部js代码如下

function uploadimg(data) {  var that=this;  var i = data.i ? data.i : 0,//要上传的图片    success = data.success ? data.success : 0,//上传成功的个数    fail = data.fail ? data.fail : 0;//上传失败的个数  wx.uploadFile({    url: data.url, //开发者服务器 url    filePath: data.path[i],    name: 'file',    formData: {      'user': 'test'    },    success: function (res) {      success++;      //do something    },    fail: function () {      fail++;    },    complete: function () {      i++;      if (i == data.path.length) {        console.log("success:" + success + "fail" + fail);      }else{        data.i = i;        data.success = success;        data.fail = fail;        uploadimg(data);      }    }  })}Page({  /**   * 页面的初始数据   */  data: {    images: [],//临时图片地址    upImgUrl: 'https://........'//上传图片服务器地址  },   chooseImage: function () {    var that = this;    wx.chooseImage({      count: 9, // 默认9      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有      success: function (res) {        console.log(res);        var tempFilePaths = res.tempFilePaths        that.setData({          images: that.data.images.concat(tempFilePaths)        })      }    })  },  previewImage: function (e) {    wx.previewImage({      current: e.currentTarget.id, // 当前显示图片的http链接      urls: this.data.images // 需要预览的图片http链接列表    })  },  uploadImg: function (e) {    var that = this;    if (that.data.images.length > 0) {      uploadimg({        url:  that.data.upImgUrl,//这里是你图片上传的接口        path: that.data.images//这里是选取的图片的地址数组      });    } else {        console.log("没有可上传的文件");    }  }})

 小程序还在摸索阶段没实际开发测试过,暂时先记录下

转载于:https://www.cnblogs.com/Anne3/p/8884270.html

你可能感兴趣的文章
Markdown-写作必备
查看>>
关于在Java中 a!=a 值为真的解释(摘抄)
查看>>
C#串口小助手
查看>>
详解定位与定位应用
查看>>
【前端开发】 5分钟创建 Mock Server
查看>>
一个Tomcat配置参数引发的血案
查看>>
java 从键盘录入的三种方法
查看>>
使用jQuery和YQL,以Ajax方式加载外部内容
查看>>
pyspider 示例
查看>>
Ubuntu下Sublime Text 3解决无法输入中文的方法
查看>>
电路板工艺中的NPTH和PTH
查看>>
JNI实现JAVA和C++互相调用
查看>>
在MySQL的InnoDB存储引擎中count(*)函数的优化
查看>>
C#中利用正则表达式实现字符串搜索
查看>>
JavaEE基础(九)
查看>>
pycharm 设置文件编码的位置:Editor-->File Encodings
查看>>
【黑马程序员】————枚举
查看>>
20172319 实验五 《网络编程与安全》实验报告
查看>>
Mac下多个jdk自由切换
查看>>
Android中onInterceptTouchEvent、dispatchTouchEvent及onTouchEvent的调用顺序及内部原理
查看>>